#include<bits/stdc++.h>
using namespace std;
struct node{
    int d,v,a;
}ch[100005];
int n,m,L,V,w[100005],T;
int main()
{
    cin>>T;
    while(T--)
    {
        cin>>n>>m>>L>>V;
        for(int i=1;i<=n;i++)
            cin>>ch[i].d>>ch[i].v>>ch[i].a;
        for(int i=1;i<=m;i++)
            cin>>w[i];
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            if(ch[i].d>w[m])
                continue;
            if(ch[i].a>=0)
            {
                double s=w[m]-ch[i].d;
                double v1=sqrt(ch[i].v*ch[i].v+2*ch[i].a*s);
                if(v1>V)
                    ans++;
            }
            else if(ch[i].v>V)
            {
                double s=1.0*(V*V-ch[i].v*ch[i].v)/ch[i].a/2;
                for(int i=1;i<=m&&w[i]<=s;i++)
                    if(w[i]>=ch[i].d)
                    {
                        ans++;
                        break;
                    }
            }
        }
        cout<<ans<<' ';
    }
    return 0;
}
